package com.ssy.lingxi.order.model.vo.basic.request;

import com.ssy.lingxi.order.handler.annotation.InvoiceKindAnnotation;
import com.ssy.lingxi.order.handler.annotation.InvoiceTypeAnnotation;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * 订单发票信息
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-17
 */
public class OrderInvoiceVO implements Serializable {
    private static final long serialVersionUID = 7302120324692332001L;

    /**
     * 发票Id
     */
    @NotNull(message = "发票Id要大于0")
    @Positive(message = "发票Id要大于0")
    private Long invoiceId;

    /**
     * 发票种类，1-企业，2-个人
     */
    @NotNull(message = "发票种类不能为空")
    @InvoiceKindAnnotation
    private Integer invoiceKind;

    /**
     * 发票类型，1-增值税普通发票，2-增值税专用发票
     */
    @NotNull(message = "发票类型不能为空")
    @InvoiceTypeAnnotation
    private Integer invoiceType;

    /**
     * 发票台头
     */
    @NotBlank(message = "发票台头不能为空")
    @Size(max = 200, message = "发票台头最长200个字符")
    private String title;

    /**
     * 纳税号
     */
    @Size(max = 50, message = "发票纳税号最长50个字符")
    private String taxNo;

    /**
     * 开户银行
     */
    @Size(max = 200, message = "开户银行最长200个字符")
    private String bank;

    /**
     * 账号
     */
    @Size(max = 50, message = "账号最长50个字符")
    private String account;

    /**
     * 地址
     */
    @Size(max = 200, message = "发票地址最长200个字符")
    private String address;

    /**
     * 电话
     */
    @Size(max = 20, message = "发票电话最长20个字符")
    private String phone;

    /**
     * 是否默认，true-是，false-否
     */
    @NotNull(message = "'是否默认发票'不能为空")
    private Boolean defaultInvoice;

    public Long getInvoiceId() {
        return invoiceId;
    }

    public void setInvoiceId(Long invoiceId) {
        this.invoiceId = invoiceId;
    }

    public Integer getInvoiceKind() {
        return invoiceKind;
    }

    public void setInvoiceKind(Integer invoiceKind) {
        this.invoiceKind = invoiceKind;
    }

    public Integer getInvoiceType() {
        return invoiceType;
    }

    public void setInvoiceType(Integer invoiceType) {
        this.invoiceType = invoiceType;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTaxNo() {
        return taxNo;
    }

    public void setTaxNo(String taxNo) {
        this.taxNo = taxNo;
    }

    public String getBank() {
        return bank;
    }

    public void setBank(String bank) {
        this.bank = bank;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Boolean getDefaultInvoice() {
        return defaultInvoice;
    }

    public void setDefaultInvoice(Boolean defaultInvoice) {
        this.defaultInvoice = defaultInvoice;
    }
}
